
#pragma once
#ifndef PREDICTOR_H_SEEN
#define PREDICTOR_H_SEEN

#include <cstddef>
#include <cstring>
#include <inttypes.h>
#include <vector>


class branch_record_c
{
public:
    branch_record_c();
    ~branch_record_c();
    unsigned int   instruction_addr;   // the branch's PC (program counter)
    bool   is_taken;                  // taken or
    bool   is_conditional;           // true if the branch is conditional; false otherwise

};

class PREDICTOR
{
public:
    bool get_prediction( branch_record_c* br);

    void update_predictor( branch_record_c* br, bool taken);

};

#endif // PREDICTOR_H_SEEN


